home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / parallax / mac_sit.hqx / Parallaxis 2.11 / sort.z < prev   
Text File  |  1992-01-09  |  4KB  |  146 lines

  1. START
  2. 10 PE
  3. 2 PORTS
  4. SCALAR     I1 I10 I4 B2
  5. VECTOR     I1 I3 B1 B2 I1
  6.     1  :    GOTO 15;
  7.     2  :    PROC 1 VECTOR I1;
  8.         POPV VI1:1;
  9.         VI[VI1:1] := 0;
  10.         PUSHV VI1:1;
  11.         RETURN;
  12.     3  :    PROC 1;
  13.         ERROR "value out of range";
  14.         RETURN;
  15.     4  :    PROC 1
  16.         SCALAR    
  17.         VECTOR     I2 I1; group number 1
  18.         PUSHV ADDR VI1:2;
  19.     5  :    VI1:1 := ID - 1; for LIST calculating DIMi
  20.         VI1:1 := VI1:1 + 1;      DIM1
  21.     6  :    VI1:3 := VI1:1 - 1;
  22.     7  :    VI1:3 := VI1:3 - 1;
  23.     8  :    VI1:2 := VI1:3;
  24.         VI1:2 := VI1:2 + 1;
  25.         IF VI1:3 < 0 CALL 2;
  26.         IF VI1:3 > 9 CALL 2;
  27.         CONNECT 1 TO 2 AT VI1:2;
  28.     9  :    VI1:3 := VI1:1 + 1;
  29.    10  :    VI1:3 := VI1:3 - 1;
  30.    11  :    VI1:2 := VI1:3;
  31.         VI1:2 := VI1:2 + 1;
  32.         IF VI1:3 < 0 CALL 2;
  33.         IF VI1:3 > 9 CALL 2;
  34.         CONNECT 2 TO 1 AT VI1:2;
  35.    12  :    POPV VI1:2;
  36.    13  :    RETURN;    group number : 1
  37.    14  :    PROC 1;    configuration : LIST
  38.         VI0:1 := ID - 1; for LIST calculating DIMi
  39.         VI0:1 := VI0:1 + 1;      DIM1
  40.         RETURN;    configuration : LIST
  41.    15  :    CALL 4;    connections
  42.    16!15  :    WRITE "Enter 10 values: "; line 15 column 2 
  43.    17!16  :    SI0:1 := 1; line 16 column 2 
  44.    18  :    SI0:13 := 10;
  45.    19!16  :    IF SI0:1 > SI0:13 GOTO 28; line 16 column 2 
  46.    20!16  :    IF SI0:1 < 1 CALL 3; line 16 column 19 
  47.    21  :    IF 10 < SI0:1 CALL 3;
  48.    22  :    SI0:12 := ADDR SI0:2 - SIZE( I1 );
  49.    23  :    SI0:14 := SI0:1 * SIZE( I1 );
  50.    24  :    SI0:12 := SI0:12 + SI0:14;
  51.    25  :    READ SI[SI0:12];
  52.    26  :    SI0:1 := SI0:1 + 1;
  53.    27  :    GOTO 19;
  54.    28!17  :    CALL 14; line 17 column 2 
  55.    29  :    LOAD VI0:2 WITH SI0:2;
  56.    30!19  :    SI0:1 := 1; line 19 column 2 
  57.    31  :    SI0:13 := 10;
  58.    32!19  :    IF SI0:1 > SI0:13 GOTO 104; line 19 column 2 
  59.    33!20  :    CALL 14; line 20 column 4 
  60.    34!21  :    VI0:4 := VI0:2; line 21 column 6 
  61.    35  :    PROPAGATE VI0:4 OUT 2 IN 1;
  62.    36!22  :    VI0:3 := VI0:2; line 22 column 6 
  63.    37  :    PROPAGATE VI0:3 OUT 1 IN 2;
  64.    38!23  :    VB0:1 := FALSE; line 23 column 6 
  65.    39!25  :    SI0:14 := SI0:1 MOD 2; line 25 column 6 
  66.    40  :    SB0:1 := SI0:14;
  67.    41  :    IF SB0:1 = FALSE GOTO 63;
  68.    42!26  :    VB0:3 := TRUE; line 26 column 8 
  69.    43  :    VI0:5 := VI0:1 MOD 2;
  70.    44  :    VB0:2 := VI0:5;
  71.    45  :    IF VB0:2 = FALSE CALL 48;
  72.    46  :    IF VB0:3 CALL 51;
  73.    47  :    GOTO 55;
  74.    48  :    PROC 1;
  75.    49  :    VB0:3 := FALSE;
  76.    50  :    RETURN;
  77.    51  :    PROC 1;
  78.    52  :    VB0:2 := VI0:3 < VI0:2;
  79.    53  :    VB0:3 := VB0:2;
  80.    54  :    RETURN;
  81.    55  :    VB0:2 := VB0:3;
  82.    56  :    IF VB0:2 CALL 58;
  83.    57  :    GOTO 62;
  84.    58  :    PROC 1;
  85.    59!27  :    VI0:2 := VI0:3; line 27 column 10 
  86.    60!28  :    VB0:1 := TRUE; line 28 column 10 
  87.    61  :    RETURN;
  88.    62  :    GOTO 84;
  89.    63!31  :    VB0:2 := TRUE; line 31 column 8 
  90.    64  :    VI0:5 := VI0:1 MOD 2;
  91.    65  :    VB0:3 := VI0:5;
  92.    66  :    VB0:3 := NOT VB0:3;
  93.    67  :    IF VB0:3 = FALSE CALL 70;
  94.    68  :    IF VB0:2 CALL 73;
  95.    69  :    GOTO 77;
  96.    70  :    PROC 1;
  97.    71  :    VB0:2 := FALSE;
  98.    72  :    RETURN;
  99.    73  :    PROC 1;
  100.    74  :    VB0:3 := VI0:3 < VI0:2;
  101.    75  :    VB0:2 := VB0:3;
  102.    76  :    RETURN;
  103.    77  :    VB0:3 := VB0:2;
  104.    78  :    IF VB0:3 CALL 80;
  105.    79  :    GOTO 84;
  106.    80  :    PROC 1;
  107.    81!32  :    VI0:2 := VI0:3; line 32 column 10 
  108.    82!33  :    VB0:1 := TRUE; line 33 column 10 
  109.    83  :    RETURN;
  110.    84!37  :    PROPAGATE VB0:1 OUT 2 IN 1; line 37 column 6 
  111.    85!38  :    VB0:3 := TRUE; line 38 column 6 
  112.    86  :    IF VB0:1 = FALSE CALL 89;
  113.    87  :    IF VB0:3 CALL 92;
  114.    88  :    GOTO 96;
  115.    89  :    PROC 1;
  116.    90  :    VB0:3 := FALSE;
  117.    91  :    RETURN;
  118.    92  :    PROC 1;
  119.    93  :    VB0:2 := ID > 1;
  120.    94  :    VB0:3 := VB0:2;
  121.    95  :    RETURN;
  122.    96  :    VB0:2 := VB0:3;
  123.    97  :    IF VB0:2 CALL 99;
  124.    98  :    GOTO 102;
  125.    99  :    PROC 1;
  126.   100!38  :    VI0:2 := VI0:4; line 38 column 35 
  127.   101  :    RETURN;
  128.   102  :    SI0:1 := SI0:1 + 1;
  129.   103  :    GOTO 32;
  130.   104!42  :    CALL 14; line 42 column 2 
  131.   105  :    STORE VI0:2 TO SI0:2;
  132.   106!43  :    SI0:1 := 1; line 43 column 2 
  133.   107  :    SI0:13 := 10;
  134.   108!43  :    IF SI0:1 > SI0:13 GOTO 118; line 43 column 2 
  135.   109!43  :    IF SI0:1 < 1 CALL 3; line 43 column 19 
  136.   110  :    IF 10 < SI0:1 CALL 3;
  137.   111  :    SI0:14 := ADDR SI0:2 - SIZE( I1 );
  138.   112  :    SI0:15 := SI0:1 * SIZE( I1 );
  139.   113  :    SI0:14 := SI0:14 + SI0:15;
  140.   114  :    WRITE SI[SI0:14] 10;
  141.   115!43  :    WRITE EOL; line 43 column 38 
  142.   116  :    SI0:1 := SI0:1 + 1;
  143.   117  :    GOTO 108;
  144.   118  :    END;    SORT
  145. STOP
  146.